/*
 * Università degli Studi di Trento
 * Facoltà di Scienze MM.FF.NN.
 * Corso di Laurea Triennale in Informatica
 * A.A. 2010/2011
 * Progetto per il corso di Sistemi Operativi 1
 * Progetto 4: simulazione di una rotonda
 * Autori:
 *  Abram Lorenzo - 140368
 *  Dal Lago Loris - 139428
 *  Florio Alessandro - 140245
 */

/********************************************************************************
  Contiene i prototipi delle funzioni pubbliche della rotatoria

  Contiene anche il tipo ptrBaut che ha quindi visibilita' pubblica
********************************************************************************/

#ifndef ROUNDABOUT_H
#define ROUNDABOUT_H

#include "common.h"
#include "car.h"

typedef struct SBaut * ptrBaut; 

ptrBaut Baut_create();

ptrCar Baut_getTopQueueCar(Place, ptrBaut);
pthread_mutex_t * Baut_getMutexRoad(ptrBaut);
bool Baut_isEmpty(ptrBaut);
int Baut_getReadFifo(ptrBaut);
void Baut_notify(ptrCar, ptrBaut);

void Baut_destroy(ptrBaut);

#ifdef DEBUG
void Baut_printf (ptrBaut);
#endif /* DEBUG */

#endif /*ROUNDABOUT_H*/
